← All Articles

[Web Basic] HTTP

Posted on

HTTP


HTTP란?

HTTP(Hyper Text Transfer Protocol)란 인터넷에서 데이터를 주고받을 수 있는 프로토콜을 의미한다.

주로 HTML 문서를 주고받는 용도로 사용된다. 물론 HTML 문서 뿐만 아니라 Plain text, JSON 데이터 XML 등 다양한 형태의 정보도 주고받을 수 있다.

웹 개발자라면 HTTP를 모르고선 통신을 논하기 어렵다. 또 HTTP 관련 지식은 에러를 해결하는데도 용이하다.

보통 우리는 인터넷 상에서 URL을 통해 각종 데이터에 접근하게 된다.

여기서 좀 더 구체적으로 클라이언트-서버 기준으로 통신과정을 살펴보게 되면 유저가 URL을 통해 해당 정보를 요청하게 되면 서버 측에서는 해당정보를 전달해주게 된다. 이 과정에서 사용되는 프로토콜 중 하나가 http 이다.

image


HTTP 특징

  • HTTP 메세지는 HTTP 서버와 HTTP 클라이언트에 의해 해석된다.
  • HTTP는 연결 상태를 유지하지 않는 비연결성(Stateless) 프로토콜이다. -> 이런 단점을 해결하기 위해 Cookie와 Session의 개념이 등장함. 이 개념들도 꼭 한번 정리하자 !
  • HTTP는 연결을 유지하지 않는 프로토콜이다 보니 요청/응답 방식으로 동작함.

HTTP Message Structure

HTTP 메시지를 보고서 현재 요청/응답 상태를 식별할 수 있을 정도는 되어야 하기 때문에 HTTP 메시지 구조를 익혀둘 필요가 있다.

HTTP Request 구조 (3부분으로 구성)

  • Start line
  • Headers
  • Body

HTTP Response 구조 (3부분으로 구성)

  • Status line
  • Headers
  • Body

HTTP Request Structure

Start line

  • 요청 메시지의 첫 줄을 의미함.
  • start line은 3부분으로 구성
// start line 예시
GET /search HTTP/1.1
  • HTTP method : 해당 요청의 요청 방식을 의미. GET, POST 등 8가지의 방식이 있음.
  • Requst target : 해당 요청이 전송되는 URL (예시에서는 /search)
  • HTTP version : 사용되는 HTTP version

Headers

  • 해당 요청에 대한 추가 정보를 담고 있음.
  • 대표적으로 자주 사용되는 Header 정보들만 정리해보자
  • Host : request가 전송되는 target의 호스트 url. (ex. google.com)
  • User-Agent : 요청을 보내는 클라이언트에 대한 정보
  • Content-Length : 메세지 body의 길이
  • Content-Type : request 메세지 body의 타입. JSON 타입일 경우 application/json으로 표시됨.
//Header 예시
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/json
Content-Length: 257
Host: google.com
User-Agent: HTTPie/0.9.3

Body

  • 해당 리퀘스트의 실제 메시지 내용
  • Body가 없는 요청 메시지도 있음! → GET Request의 경우 body가 없는 경우가 많다.

HTTP Response Structure

status line

  • Response의 상태를 간략하게 나타내주는 부분
  • 이 역시 3부분으로 구성됨
  • HTTP version
  • Status code : 응답상태를 나타내는 코드. 숫자로 표현됨. 각 숫자별로 나타내는 응답상태가 모두 상이함.
  • Status text : 응답 상태를 간략하게 설명해주는 부분
//Status line 예시. 3부분이 띄어쓰기로 구분되어 있음
HTTP/1.1 404 Not Found

Header

  • Request header와 동일함
  • 단, header의 항목들은 Request와 Response 사이에 조금씩 다름

Body

  • Request body와 동일.
  • Response body 역시 무조건 존재하는 것은 아님. 전송할 데이터가 없으면 body가 없을 수 있음.

HTTP Method

HTTP 메소드는 클라이언트-서버 사이의 요청과 응답의 방식을 뜻하며 총 8가지의 방식이 있다. (GET, POST밖에 사용해보지 못함.. 다른 것도 꼭 알고 넘어가자)

  • GET : URL이 가진 정보를 검색하기 위해 서버 측에 요청하는 방식
  • POST : form에서 post를 지정하는 경우의 방식. GET 방식에서 보낼 수 없는 자료를 전송할 때 사용 가능. 데이터를 http body에 숨겨서 전송 가능
  • HEAD : GET과 동일한 방식이나 HTTP header 정보만을 요청
  • DELETE : URL로 지정한 서버에 있는 파일을 삭제하는 용도
  • OPTIONS : 요청한 URL에 어떤 메소드를 요청할 수 있는지 확인
  • TRACE : 서버측에서 받은 리퀘스트라인, 헤더를 클라이언트에게 반송
  • CONNECT : 터널링의 목적으로 연결요청


WebBasic